package com.yidu.action;


import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageInfo;
import com.yidu.common.JsonMsg;
import com.yidu.common.Tools;
import com.yidu.domain.ListenBackstageUser;
import com.yidu.service.ListenBackstageUserService;

/**
 * 
 * 描述:
 * @author LiuXiang
 * @date 2018年12月4日 下午3:47:16
 * @version 1.0
 */
@Controller
@RequestMapping("/listenBackstageUser")
public class ListenBackstageUserController {
	@Resource
	private ListenBackstageUserService userService;
	
	
	/**
	 * 查询所有,条件查询,分页的方法
	 * @param page 分页对象
	 * @param pageSize 分页的工具
	 * @param useName 名字
	 * @param company 公司名称
	 * @param timaStart 开始时间
	 * @param timeEnd 结束时间
	 * @param oper 操作人
	 * @return 返回查询的数据
	 */
	@RequestMapping("/getAllState")
	@ResponseBody
	public Map<String, Object> getAllStore(Integer page, @RequestParam(value = "limit") Integer pageSize, @RequestParam(value = "key[userName]", required = false) String useName,@RequestParam(value = "key[company]", required = false) String company,@RequestParam(value = "key[timaStart]", required = false) String timaStart,@RequestParam(value = "key[timeEnd]", required = false) String timeEnd,@RequestParam(value = "key[oper]", required = false) String oper) {
		//创建用户对象
		ListenBackstageUser user = new ListenBackstageUser();
		//判断开始时间不为空赋值
		if(timaStart!=null && !"".equals(timaStart)) {
			user.setTimaStart(timaStart);
		}
		//判断结束时间不为空赋值
		if(timeEnd!=null && !"".equals(timeEnd)) {
			user.setTimaEnd(timeEnd);				
		}
		//赋值名字
		user.setBuName(useName);
		//赋值公司
	    user.setSite(company);
	    //赋值操作人
	    user.setOper(oper);
	    //创建用户map
        HashMap<String, Object> map = new HashMap<>();
        //放入分页参数进行查询
        PageInfo<ListenBackstageUser> list = userService.findAll(page, pageSize,user);
        
        map.put("code", 0);
        map.put("msg", "");
        map.put("count", list.getTotal());
        map.put("data", list.getList());
        //返回map
        return map;
	}
	/**
	 * 增加与修改的方法
	 * @param request 请求
	 * @param id 传入的id
	 * @param buName 姓名
	 * @param buPwd 密码
	 * @param buPhone 手机号码
	 * @param site 公司名称
	 * @param buRemarks 备注
	 * @return 返回的数据
	 * @throws ParseException 异常
	 */
	@RequestMapping("addOrUpdate")
	@ResponseBody
	public JsonMsg addOrUpdate(HttpServletRequest request,@RequestParam(value = "id")String id,@RequestParam(value = "buName")String buName,@RequestParam(value = "buPwd")String buPwd,@RequestParam(value = "buPhone")String buPhone,@RequestParam(value = "companyId")String site,@RequestParam(value = "buRemarks")String buRemarks) throws ParseException{
		//得到会话
		HttpSession session = request.getSession();
		//取得session对象
		ListenBackstageUser oper = (ListenBackstageUser) session.getAttribute("user");
		//创建用户对象
		ListenBackstageUser user = new ListenBackstageUser();
		//赋值名字
		user.setBuName(buName);
		//赋值密码
		user.setBuPwd(buPwd);
		//赋值电话号码
		user.setBuPhone(buPhone);
		//赋值公司
		user.setSite(site);
		//是否有效默认赋1
		user.setIsva(1);
		//获取当前时间转换赋值操作时间
		user.setOpenTime(Tools.stringToDateTime(Tools.getCurDateTime()));
		//赋值备注
		user.setBuRemarks(buRemarks);
		//判断操作人不为空赋值session名字
		if(oper!=null && !"".equals(oper)) {
			user.setOper(oper.getBuName());
		}
		//创建消息对象
		JsonMsg msg=new JsonMsg();
		//判断id为空时增加否则修改
		if(id==null || "".equals(id)){
			msg.setDatas(1);
			msg.setMsg("增加成功");
			//调用增加的方法
			userService.insertSelective(user);
		}else{
			msg.setDatas(2);
			msg.setMsg("修改成功");
			//赋值id
			user.setBuId(id);
			//调用修改的方法
			userService.updateByPrimaryKeySelective(user);
		}
		//返回消息
		return msg;
	}
	/**
	 * 修改上屏
	 * @param buId 传入的用户id
	 * @return 返回根据id查询的数据
	 */
	@RequestMapping("/display")
	@ResponseBody
	public ListenBackstageUser seleteById(@RequestParam(value = "id")String buId){
		//调用根据id查询所有的方法
		ListenBackstageUser user = userService.selectByPrimaryKey(buId);
		//返回查询的数据
		return user;
	}
	/**
	 * 切换是否有效的方法
	 * @param id 传入用户的id
	 * @param isva 是否有效
	 * @return 返回有效或无效值
	 */
	@RequestMapping("/enableOrDisable")
	@ResponseBody
	public JsonMsg enableOrDisable(@RequestParam(value = "id")String id,@RequestParam(value = "isva")Integer isva){
		//创建用户对象
		ListenBackstageUser user = new ListenBackstageUser();
		//赋值是否有效
		user.setIsva(isva);
		//创建消息对象
		JsonMsg msg=new JsonMsg();
		//判断是否有效为1(有效)则停用成无效
		if(isva==1){
			msg.setDatas(3);
			msg.setMsg("停用成功");
			//赋值id
			user.setBuId(id);
			//调用停用方法
			userService.disable(user);
		}else{
			//赋值id
			user.setBuId(id);
			//调用启用方法
			userService.enable(user);
		}
		//返回消息
		return msg;
	}
	/**
	 * 删除
	 * @param buId 用户的id 
	 * @return 返回消息
	 */
	@RequestMapping("delete")
	@ResponseBody
	public JsonMsg delete(@RequestParam(value = "id")String buId){
		//创建消息对象
		JsonMsg msg=new JsonMsg();
		msg.setDatas(5);
		msg.setMsg("删除成功");
		//调用删除的方法
		userService.deleteByPrimaryKey(buId);
		//返回消息
		return msg;
		
	}
	/**
	 * 查询所有的用户
	 * @return 返回查询的数据
	 */
	@RequestMapping("/queryAll")
	@ResponseBody
	public List<ListenBackstageUser> queryAll(){
		//调用无参查询所有的方法
		return userService.querAll();
	}
	/**
	 * 登录的方法
	 * @param request 请求
	 * @param buName 用户姓名
	 * @param buPwd 密码
	 * @return 返回查询的消息
	 */
	@RequestMapping("/login")
	@ResponseBody
	public JsonMsg login(HttpServletRequest request,@RequestParam(value = "buName")String buName,@RequestParam(value = "buPwd")String buPwd){
		//调用查询名字,密码的方法
		ListenBackstageUser user = userService.selectNamePswd(buName,buPwd);
		//创建消息对象
		JsonMsg msg=new JsonMsg();
		//调用session
		HttpSession session = request.getSession();
		//判断不为空登录成功
		if(user!=null && !"".equals(user)){
			//判断为1用户有效
			if("1".equals(user.getIsva()) || user.getIsva()==1){
				msg.setDatas(4);
				msg.setMsg("登录成功");
				//创建session为user
				session.setAttribute("user", user);
			}else{
				msg.setDatas(6);
				msg.setMsg("该账户无效");
			}
		}else{
			msg.setDatas(6);
			msg.setMsg("用户名或密码错误");
		}
		//返回消息
		return msg;
	}
	
	/**
	 * 判断后台是否登录用户
	 * @author wpy
	 * @param request 请求
	 * @return
	 */
	@RequestMapping("/selectUser")
	@ResponseBody
	public JsonMsg selectUser(HttpServletRequest request) {
		HttpSession session = request.getSession();//取会话
		ListenBackstageUser user = (ListenBackstageUser) session.getAttribute("user");//得到登录后存进去的用户
		JsonMsg msg = new JsonMsg();//得到json对象
		//判断用户是否为空
		if(user!=null) {
			//不为空时
			msg.setDatas(1);
			msg.setMsg("登录成功");
			msg.setObject(user);
		}else {
			//为空时
			msg.setDatas(0);
			msg.setMsg("未登录");
		}
		return msg;
	}
	
	/**
	 * 退出后台已登录的用户
	 * @author wpy
	 * @param request 请求
	 * @return
	 */
	@RequestMapping("/removeUser")
	@ResponseBody
	public JsonMsg removeUser(HttpServletRequest request) {
		HttpSession session = request.getSession();
		session.removeAttribute("user");
		JsonMsg msg = new JsonMsg();
		msg.setDatas(1);
		msg.setMsg("退出成功");
		return msg;
	}
	/**
	 * 查询用户名是否存在
	 * @author 刘武
	 * @param buName 转过来的用户名
	 * @return Json工具类
	 */
	@RequestMapping("/findByBuName")
	@ResponseBody
	public JsonMsg findByBuName(String buName) {
		ListenBackstageUser user = userService.selectByName(buName);
		JsonMsg msg=new JsonMsg();
		
		if(user==null){
			msg.setDatas(1);
			msg.setMsg("可以注册");
		}else{
			msg.setDatas(0);
			msg.setMsg("此用户名已存在");
		}
		return msg;
	}
}

